﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insifo.WE;
using Microsoft.Reporting.WebForms;
using System.Collections.Specialized;

public partial class segVentanaListar : ObjectPage
{

    #region CONSTANTES

    protected const string REPORTE_RUTA = "/Reports/GALEXITO_SEG/repVentana";
    protected const string EDITAR_RUTA = "~/seg/segVentanaEditar.aspx";

    #endregion 

    #region EVENTOS

    protected void Page_Load(object sender, EventArgs e)
    {
        //Eventos del Master
        Master.MenuAccionEvento += new MasterPageMenuListarClickHandler(Master_MenuButton);
        if (!IsPostBack)
        {            
            Cargar();
            Listar();
        }
    }

    protected void Master_MenuButton(object sender, EventArgs e)
    {
        string strAccion = ((CommandEventArgs)e).CommandName;
        switch (strAccion)
        {
            case "Buscar":
                ucpagLista.NumeroPagina = 1;
                Listar();
                break;
            case "Nuevo":
                Nuevo();
                break;
            case "Exportar":
                Exportar();
                break;
            case "Imprimir":
                Imprimir();
                break;
        }
    }

    protected void ucpagLista_CambioPagina(object sender, EventArgs e)
    {
        Listar();
    }

    protected void lvLista_ItemCommand(object sender, ListViewCommandEventArgs e)
    {
        string strIdModelo = e.CommandArgument.ToString();
        switch (e.CommandName)
        {
            case "Editar":
                Editar(strIdModelo);
                break;
            case "Eliminar":
                Eliminar(strIdModelo);
                break;
        }
    }

    protected void lvLista_ItemDataBound(object sender, ListViewItemEventArgs e)
    {
        ImageButton ibt;
        if (e.Item.ItemType == ListViewItemType.DataItem)
        {
            ibt = (ImageButton)e.Item.FindControl("ibtEliminar");
            Label lb = (Label)e.Item.FindControl("lblEstado");
            if (((Label)e.Item.FindControl("lblEstado")).Text == Constantes.ESTADO_ACTIVO_DESC)
            {
                ibt.ImageUrl = Constantes.ESTADO_ACTIVO_URL;
                ibt.ToolTip = "Inactivar";
            }
            else
            {
                ibt.ImageUrl = Constantes.ESTADO_INACTIVO_URL;
                ibt.ToolTip = "Activar";
            }
        }
    }

    #endregion 

    #region METODOS

    protected void Cargar()
    {
        //Master.Titulo.Text = "Nivel Alerta";
        ucpagLista.NumeroPagina = 1;
        ddlEstado.SelectedIndex = 0; //Estado Activo
        //Page.ViewStateMode = System.Web.UI.ViewStateMode.Disabled;
        //lvLista.ViewStateMode = System.Web.UI.ViewStateMode.Disabled;
        //Master.VentanaAccion.Items.Remove(Master.VentanaAccion.Items[1]);
        Util.loadComboAndItem(ddlIdAplicacion, ListarAplicacion(), "Descripcion", "IdAplicacion", "--Seleccione--", "0");
    }

    /// <summary>
    /// Método Lista
    /// </summary>
    /// <returns></returns>
    protected void Listar()
    {
        int intTotalFilas = 0, intFilasXPagina = 0, inIdAplicacion = 0;
        string strDescripcion, strEstado;

        strEstado = ddlEstado.SelectedValue;
        strDescripcion = txtDescripcion.Text.Trim();
        inIdAplicacion = int.Parse(ddlIdAplicacion.SelectedValue);
        //Validar

        //Filtrar
        DataTable dt = ListarVentana(inIdAplicacion, strDescripcion, ddlEstado.SelectedValue, ucpagLista.NumeroPagina);
        lvLista.DataSource = dt;
        lvLista.DataBind();
        if (dt.Rows.Count > 0)
        {
            intFilasXPagina =  Convert.ToInt32(dt.Rows[0]["FilasXPagina"]);
            intTotalFilas = Convert.ToInt32(dt.Rows[0]["TotalFilas"]);
        }
        ucpagLista.TotalRegistros = intTotalFilas;
        ucpagLista.RegistrosPorPagina = intFilasXPagina;
        ucpagLista.EnlazarPaginador();
    }

    protected void Nuevo()
    {
        string strCadena = "?a=n";
        Util.Redireciona(EDITAR_RUTA, strCadena, true);
    }

    protected void Editar(string strIdVentana)
    {
        string strCadena = "?a=e&i=" + strIdVentana;
        Util.Redireciona(EDITAR_RUTA, strCadena, true);
    }

    protected void Eliminar(string strIdVentana)
    {
        string strCadena = "?a=d&i=" + strIdVentana;
        Util.Redireciona(EDITAR_RUTA, strCadena, true);
    }

    protected void Exportar()
    {
        UtilExcel ut = new UtilExcel();
        DataTable dt = ListarAplicacion();
        dt.Columns.Remove("FilasXPagina");
        dt.Columns.Remove("TotalFilas");

        ut.ExportaAExcelHoja(dt, Resources.resDiccionario.Archivo, Resources.resDiccionario.Datos);
    }

    protected void Imprimir()
    {
        Util.ejecutaScriptAJAX(this.Page, string.Format("window.open('../rep/repPreview.aspx');"));
    }
    #endregion

    #region WEBSERVICES

    protected DataTable ListarAplicacion()
    {
        //WCAplicacion.BEAplicacion beAp = new WCAplicacion.BEAplicacion();
        DataTable dt = new DataTable();
        //beAp.IdSuit = 0;
        //beAp.Descripcion = string.Empty;
        //beAp.Estado = "A";
        //beAp.Pagina = 0;
        using (var client = new ServiceClient<WCAplicacion.IWCAplicacion>("BasicHttpBinding_IWCAplicacion"))
        {
            var response = client.ServiceOperation<DataTable>(
                c => c.Listar().Tables[0]
                    );
            ;
            dt = response;
        }
        return dt;
    }

    /// <summary>
    /// Método Lista Niveles de Alerta
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected DataTable ListarVentana(int pintIdAplicacion, string pstrDescripcion, string pstrEstado, int pintPagina)
    {

        WCVentana.BEVentana be = new WCVentana.BEVentana();
        be.IdAplicacion = pintIdAplicacion;
        be.DescripcionVentana = pstrDescripcion;
        be.Estado = pstrEstado;
        be.Pagina = pintPagina;
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCVentana.IWCVentana>("BasicHttpBinding_IWCVentana"))
        {
            var response = client.ServiceOperation<DataTable>(
               c => c.Listar(be).Tables[0]
               );
            ;
            dt = response;
        }
        return dt;
    }
    #endregion


   
}